// 版权所有2011 Go作者。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

package json

import (
	"strings"
)

// tagOptions是结构字段“json”中逗号后面的字符串
// 标记或空字符串。它不包括前导逗号。
type tagOptions string

// parseTag将结构字段的json标记拆分为其名称和
// 逗号分隔选项。
func parseTag(tag string) (string, tagOptions) {
	if idx := strings.Index(tag, ","); idx != -1 {
		return tag[:idx], tagOptions(tag[idx+1:])
	}
	return tag, tagOptions("")
}

// 包含报告是否使用逗号分隔的选项列表
// 包含特定的substr标志。substr必须由一个
// 字符串边界或逗号。
func (o tagOptions) Contains(optionName string) bool {
	if len(o) == 0 {
		return false
	}
	s := string(o)
	for s != "" {
		var next string
		i := strings.Index(s, ",")
		if i >= 0 {
			s, next = s[:i], s[i+1:]
		}
		if s == optionName {
			return true
		}
		s = next
	}
	return false
}
